/**
 开发团队 :
 开发人员 : ZBB295
 开发时间 : 2022/8/18 15:14
 文件名称 : article-modify.js
 开发工具 : WebStorm
 */

//导入formidable第三方模块，用于解析表单数据类型是二进制
const formidable = require('formidable')
//导入path模块
const path = require('path')
//导入文章集合构造函数模块
const { Article, validateArticle} = require('../../model/article')

const article_modify_hander = async (req,res)=>{

    //因为文章要修改的id是通过地址栏方式传递
    const id = req.query.id;

    // 1.创建表单解析对象
    const form = new formidable.IncomingForm();
    // 2.配置上传文件的存放位置
    form.uploadDir = path.join(__dirname, '../', '../', 'public', 'uploads');
    // 3.保留上传文件的后缀
    form.keepExtensions = true;
    // 4.解析表单
    form.parse(req,  async (err, fields, files) => {
        // 1.err错误对象 如果表单解析失败 err里面存储错误信息 如果表单解析成功 err将会是null
        // 2.fields 对象类型 保存普通表单数据
        // 3.files 对象类型 保存了和上传文件相关的数据
        // res.send(path.join('/uploads',files.cover.newFilename))
        // res.send(files.cover.path.split('public')[1])
        // res.send(fields);
        // return;

        if (err){
            return console.log(err);
        }

        try{
            // return res.send(req.body);//此处req.body为｛｝
            //添加文章列表时候验证文章标题
            // await validateArticle({title:fields.title});
            await validateArticle(fields);
        }catch (ex){
            // return console.log(ex.message);
            return res.redirect('/admin/article-edit?message='+ex.message+'&id='+id);
        }

        await Article.updateOne({_id: id},{
            title: fields.title,
            author: fields.authorid,
            publishDate: fields.publishDate,
            cover: path.join('/uploads',files.cover.newFilename), //files.cover.path.split('public')[1],
            content: fields.content,
        })

        // 将页面重定向到文章列表页面
        res.redirect('/admin/article');
    })

}

module.exports = article_modify_hander